﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Classes
{
    public class SolicitarCotizacion
    {
        public SolicitarCotizacion(DBClientes dbClientes, DBCotizaciones dbCotizaciones, DBReportes dbReportes)
        {
            this.IngresoPantalla(dbClientes,dbCotizaciones, dbReportes);

        }
        public Cotizacion IngresoPantalla(DBClientes dbClientes, DBCotizaciones dbCotizaciones,DBReportes dbReportes)
        { 
                
                //Datos a ingresar por el cliente
                String dni;
                String patente;
                String marca;
                String modelo;
                String edad;
                String zona;
            
                
		        Console.Clear();

                Cliente cliente;
               
             if (CancelarOperacion() == false)
             {

                do
                {
                    Console.Clear();
                    Console.WriteLine("Ingrese su DNI: ");
                    do
                        dni = Console.ReadLine();
                    while (!(ValidarDNI(dni)));

                    cliente = dbClientes.GetCliente(dni);

                    Console.WriteLine("");
                    if (cliente == null)
                    {
                        Console.WriteLine("Cliente Inexistente !!!");
                        Console.ReadKey();
                        return null;
                    }
            

                }
                while (ValidarIngresoDato(dni) == false);

                do
                {   Console.Write("Patente: ");
                    patente = Console.ReadLine();

                }
                while (ValidarIngresoDato(patente) == false);
                
                do
                {
                    Console.Write("Ingrese Marca: ");
                    marca  = Console.ReadLine();
                }
                while (ValidarIngresoDato(marca) == false);

                do
                {
                Console.Write("Ingrese modelo: ");
                modelo = Console.ReadLine();
                }
                while (ValidarIngresoDato(modelo) == false);

                //saque el ingreso de edad porque no era relevante     

                do
                {
                Console.Write("Ingrese la zona: ");
                zona = Console.ReadLine();
                }
                while (ValidarIngresoDato(zona) == false);
                 
                cliente = dbClientes.GetCliente(dni);
                Cotizacion cotizacion = new Cotizacion(cliente,dbCotizaciones);
                cotizacion.SolicitarCotizacionCalculo(cliente, dbCotizaciones, dbReportes);

                
                 Console.WriteLine("ID Cotización: " + cotizacion.ID);
                 Console.WriteLine("Resultado: " + cotizacion.Resultado);
                 Console.ReadKey();
               //  return// va a devlver el ID nuevo de la cotización con un precio estimado. Mariana
            }
            
             else Console.WriteLine("Operacion Cancelada");
             
                return null;
            
		}
    
    
        public bool ValidarIngresoDato(string dato)
        {
            if ((dato.Length == 0))
            {
                Console.Clear();
                Console.WriteLine("Debe Ingresar un valor");
                return false;
            }
            return true;
        }

        public bool CancelarOperacion()
        {
            string selection;

            Console.WriteLine("Cancelar Operacion? (S)i, (N)o:");
            if (PreguntaSiNo())
                return true;

            return false;
        }


        public Boolean PreguntaSiNo()
        {
            ConsoleKeyInfo tecla;
            string resultado;

            do
            {
                tecla = Console.ReadKey(true);
                resultado = tecla.KeyChar.ToString();
            }
            while (!(resultado == "S" || resultado == "s" || resultado == "N" || resultado == "n"));

            if (resultado == "S" || resultado == "s")
                return true;
            else //mepa q faltaba. Mariana
                return false;
        }


        public bool ValidarDNI(string dni)
        {
            if (Regex.Match(dni, @"^[0-9]?[0-9][0-9][0-9][0-9][0-9][0-9][0-9]$").Success)
                return true;
            Console.WriteLine("DNI invalido, por favor ingrese un DNI Valido:");
            return false;
        }
    }
}




